import axios from "axios";
import { ElMessage } from "element-plus";
import config from '../config/index'

const service = axios.create({
  baseURL:config.baseURL
});
// 添加请求拦截器
service.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use((res)=> {
  const {code,data,msg} = res.data
  if(code == 200){
    return data
  }else{
    const NETWORK_ERROR = '网络错误'
    ElMessage.error(msg || NETWORK_ERROR)
    return Promise.reject(msg || NETWORK_ERROR)
  }
});

function request(options){
  options.method = options.method || 'get';
  // 增加一个关于get请求参数的调整
  if(options.method.toLowerCase() == 'get'){
    options.params = options.data
  }
  // 对mock开关做一个处理
  let isMock = config.mock;
  // console.log(options,config,'options')
  // 如果自己传了，那就用自己的mock值
  if(typeof options.mock != 'undefined'){
    isMock = options.mock
  }
  // 针对环境做一个处理
  if(config.env == 'prd'){
    // 不能用mock
    service.defaults.baseURL = config.baseURL
  }else{
    service.defaults.baseURL = isMock ? config.mockApi : config.baseURL
  }
  // axios的mock封装沒看懂，不管了
  return service(options)
}

export default request